package com.lemon.exam.common.service;

import com.lemon.exam.common.entity.system.UploadFile;
import com.lemon.exam.common.enums.MinioBucketEnum;
import com.lemon.exam.common.enums.OssEnum;
import org.springframework.http.codec.multipart.FilePart;
import reactor.core.publisher.Mono;

/**
 * 文件服务对象
 *
 * @author Lemon
 * @since 2025/4/16 11:19
 */
public interface FileService {
    /**
     * 上传文件-本地磁盘（不添加中间路径）
     *
     * @param filePart
     * @return
     */
    Mono<UploadFile> uploadToLocal(FilePart filePart);

    /**
     * 上传文件-本地磁盘（添加中间路径）
     *
     * @param filePart
     * @return
     */
    Mono<UploadFile> uploadToLocal(FilePart filePart, String path);

    /**
     * 上传文件-OSS
     *
     * @param filePart
     * @param ossEnum
     * @return
     */
    Mono<UploadFile> uploadToOss(FilePart filePart, OssEnum ossEnum);

    /**
     * 上传文件-OSS
     *
     * @param filePart
     * @param bucketEnum
     * @return
     */
    Mono<UploadFile> uploadToMinio(FilePart filePart, MinioBucketEnum bucketEnum);
}
